import time

from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
from appium.options.android import UiAutomator2Options
from selenium.webdriver.common.by import By

# 字典
desired_caps = {
  'platformName': 'Android', # 被测手机是安卓
  'platformVersion': '14', # 手机安卓版本，如果是鸿蒙系统，依次尝试 12、11、10 这些版本号
  'deviceName': 'iphone 16 pro max', # 设备名，安卓手机可以随意填写
  'appPackage': 'tv.danmaku.bili', # 启动APP Package名称
  'appActivity': '.MainActivityV2', # 启动Activity名称
  'unicodeKeyboard': True, # 自动化需要输入中文时填True
  'resetKeyboard': True, # 执行完程序恢复原来输入法
  'noReset': True,       # 不要重置App, 保留当前登录数据
  'newCommandTimeout': 6000,         #appium超时时间
  'automationName' : 'UiAutomator2'
  # 'app': r'd:\apk\bili.apk',
}

# 连接Appium Server，初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub',
    options=UiAutomator2Options().load_capabilities(desired_caps))

driver.implicitly_wait(5)
# 如果有`青少年保护`界面，点击`我知道了`
iknow = driver.find_elements(By.ID, "text3")
if iknow:
    iknow.click()

# 根据id定位搜索位置框，点击
driver.find_element(By.ID, 'expand_search').click()

# 根据id定位搜索输入框，点击
sbox = driver.find_element(By.ID, 'search_src_text')
sbox.send_keys('崩坏星穹铁道')
# 输入回车键，确定搜索
driver.press_keycode(AndroidKey.ENTER)


time.sleep(1)
# 滑动翻页, 定位初始坐标和滑动后坐标
screenSize = driver.get_window_size()
screenW = screenSize['width']
screenH = screenSize['height']
x =  screenW/2
y1 = int(screenH*0.8)
y2 = int(screenH*0.4)

videos = []
for i in range(9):
    # 选择（定位）所有视频标题
    eles = driver.find_elements(By.ID, 'title')


    # 去重功能, 判断是否在videos列表里, 在就continue, 不在就添加并打印
    for ele in eles:
        title = ele.text
        if title in videos:
            continue

        videos.append(title)
        print(title)

    # print('\n--------------\n')
    # 滑动操作, duration滑动持续时间
    driver.swipe(start_x=x, start_y=y1, end_x=x, end_y=y2, duration=800)


time.sleep(5)
driver.quit()